﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIPDTO;

namespace SIPDAL
{
    public class mgConfirma
    {

        SIPDataContext _dc = new SIPDataContext();
        tblConfirma _tbconfirma = new tblConfirma();
        List<dtoConfirma> _confirma = new List<dtoConfirma>();
        dtoError _resp = new dtoError();

        /// <summary>
        /// Metodo para el registro de confirma
        /// </summary>
        /// <param name="pers"></param>
        /// <returns></returns>
        public dtoError RegistrarConfirma(dtoConfirma confirma)
        {
            //Otra información
            _tbconfirma.id_parroquia = confirma.IdParroquia;
            _tbconfirma.num_asiento = confirma.NumAsiento;
            _tbconfirma.num_folio = confirma.NumFolio;
            _tbconfirma.num_libro = confirma.NumLibro;
            _tbconfirma.fecha_confirma = Convert.ToDateTime(confirma.FechaConfirma);
            //Información del confirmando
            _tbconfirma.tipo_identificacion = confirma.TipoIdentificacion;
            _tbconfirma.identificacion = confirma.Identificacion;
            //Información de los padres
            _tbconfirma.tipo_identificacion_padre = confirma.TipoIdentificacionPadre;
            _tbconfirma.id_padre = confirma.IdPadre;
            _tbconfirma.tipo_identificacion_madre = confirma.TipoIdentificacionMadre;
            _tbconfirma.id_madre = confirma.IdMadre;
            //Información Padrinos
            _tbconfirma.tipo_identificacion_responsable = confirma.TipoIdentificacionPadrino;
            _tbconfirma.id_responsable = confirma.IdPadrino;
            //Información clérigo
            _tbconfirma.tipo_identificacion_clerigo = confirma.TipoIdentificacionClerigo;
            _tbconfirma.id_clerigo = confirma.IdClerigo;

            try
            {
                _resp = ExisteConfirma(confirma);
                if (_resp.IdError == -101)
                {
                    _dc.tblConfirmas.InsertOnSubmit(_tbconfirma);
                    _dc.SubmitChanges();
                    _resp.Mensaje = "Información guardada correctamente.";
                    _resp.IdError = 100;
                }

                return _resp;
            }

            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                return _resp;
            }

        }

        public dtoError ExisteConfirma(dtoConfirma confirma)
        {

            var condicion = (from p in _dc.tblConfirmas
                             where p.num_asiento == confirma.NumAsiento
                             && p.num_folio == confirma.NumFolio
                             && p.num_libro == confirma.NumLibro
                             && p.id_parroquia == confirma.IdParroquia
                             select p).Count();
            if (Convert.ToInt32(condicion.ToString()) > 0)
            {
                _resp.Mensaje = "Registro ya existe.";
                _resp.IdError = 101;

            }
            else
            {
                _resp.IdError = -101;
                _resp.Mensaje = "Registro no existe.";
            }
            return _resp;
        }



        /// <summary>
        /// Obtiene los datos de las confirmas por parroquia para mostrar en el listado
        /// </summary>
        /// <param name="canton"></param>
        /// <returns></returns>
        public List<dtoConfirma> ObtenerConfirmaxParroquia(dtoConfirma confirma)
        {
            int i = 0;

            try
            {

                var condicion = (from p in _dc.tblConfirmas
                                 where p.id_parroquia == confirma.IdParroquia
                                 select p).ToList();
                {
                    foreach (tblConfirma reg in condicion)
                    {
                        _confirma.Add(new dtoConfirma());
                        _confirma[i].NumLibro = reg.num_libro;
                        _confirma[i].NumFolio = reg.num_folio;
                        _confirma[i].NumAsiento = reg.num_asiento;
                        _confirma[i].FechaConfirma = Convert.ToString(reg.fecha_confirma.Value.Day + "/" + reg.fecha_confirma.Value.Month + "/" + reg.fecha_confirma.Value.Year);
                        _confirma[i].TipoIdentificacion = reg.tipo_identificacion;
                        _confirma[i].Identificacion = reg.identificacion;
                        i++;
                    }
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrió un error al obtener los datos " + ex.Message);
            }

            return _confirma;

        }

    }
    
}
